#ifndef EDS_INDEXING_HEADER
#define EDS_INDEXING_HEADER

namespace eds {

  int binom_coeff(int n, int m);

  int n_integer_solutions(const int n, const int r, const int k, int * work);

  int index_from_occ_vec(const int n,
                         const int cps,
                         const int t,
                         const int * const offsets,
                         const int * const spacing,
                         const int * const z_lookup,
                         const int * const z_arrays,
                         const int * const occ_vec,
                         int * workspace);

  void prepare_spacing_and_offsets(const int n,
                                   const int cps,
                                   const int t,
                                   int * const offsets,
                                   int * const spacing,
                                   int * work);

  int z_array_size(const int n);

  void prepare_z_array(const int n, int * const z_array, int * const z_lookup);

}

#endif
